syntax = "proto3";

import "points.proto";

package qdrant;

import "google/protobuf/struct.proto";

service Points {
  /*
  Perform insert + updates on points. If a point with a given ID already exists - it will be overwritten.
   */
  rpc Upsert (UpsertPoints) returns (PointsOperationResponse) {}
  /*
  Delete points
   */
  rpc Delete (DeletePoints) returns (PointsOperationResponse) {}
  /*
  Retrieve points
   */
  rpc Get (GetPoints) returns (GetResponse) {}
  /*
  Update named vectors for point
   */
  rpc UpdateVectors (UpdatePointVectors) returns (PointsOperationResponse) {}
  /*
  Delete named vectors for points
   */
  rpc DeleteVectors (DeletePointVectors) returns (PointsOperationResponse) {}
  /*
  Set payload for points
   */
  rpc SetPayload (SetPayloadPoints) returns (PointsOperationResponse) {}
  /*
  Overwrite payload for points
   */
  rpc OverwritePayload (SetPayloadPoints) returns (PointsOperationResponse) {}
  /*
  Delete specified key payload for points
   */
  rpc DeletePayload (DeletePayloadPoints) returns (PointsOperationResponse) {}
  /*
  Remove all payload for specified points
   */
  rpc ClearPayload (ClearPayloadPoints) returns (PointsOperationResponse) {}
  /*
  Create index for field in collection
   */
  rpc CreateFieldIndex (CreateFieldIndexCollection) returns (PointsOperationResponse) {}
  /*
  Delete field index for collection
   */
  rpc DeleteFieldIndex (DeleteFieldIndexCollection) returns (PointsOperationResponse) {}
  /*
  Retrieve closest points based on vector similarity and given filtering conditions
   */
  rpc Search (SearchPoints) returns (SearchResponse) {}
  /*
   Retrieve closest points based on vector similarity and given filtering conditions
    */
  rpc SearchBatch (SearchBatchPoints) returns (SearchBatchResponse) {}
  /*
  Retrieve closest points based on vector similarity and given filtering conditions, grouped by a given field
   */
  rpc SearchGroups (SearchPointGroups) returns (SearchGroupsResponse) {}
  /*
  Iterate over all or filtered points
  */
  rpc Scroll (ScrollPoints) returns (ScrollResponse) {}
  /*
  Look for the points which are closer to stored positive examples and at the same time further to negative examples.
   */
  rpc Recommend (RecommendPoints) returns (RecommendResponse) {}
  /*
  Look for the points which are closer to stored positive examples and at the same time further to negative examples.
   */
  rpc RecommendBatch (RecommendBatchPoints) returns (RecommendBatchResponse) {}
    /*
  Look for the points which are closer to stored positive examples and at the same time further to negative examples, grouped by a given field
   */
  rpc RecommendGroups (RecommendPointGroups) returns (RecommendGroupsResponse) {}
  /*
   Count points in collection with given filtering conditions
   */
  rpc Count (CountPoints) returns (CountResponse) {}

  /*
   Perform multiple update operations in one request
  */
  rpc UpdateBatch (UpdateBatchPoints) returns (UpdateBatchResponse) {}
}
